package com.kfm.am;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetDemo {

    public static void main(String[] args) {
        // 获取一个不可修改的Set集合
        Set set = Set.of("hym", "hyb", "lcw", "wt", "zyp", "tbc", "njc");
//        set.remove("njc");
//        set.add("jwx");
        // 迭代器
//        Iterator iterator = set.iterator();
//        while (iterator.hasNext()) {
//            System.out.println(iterator.next());
//        }
        // 因为无序列，没有索引，不支持随机访问，因此不能不能使用for循环遍历
//        for (int i = 0; i < set.size(); i ++) {
//            System.out.println(set.get(i));
//        }
        // 增强for循环
//        for (Object obj : set) {
//            System.out.println(obj);
//        }
        // forEach 方法输出
        set.forEach(obj -> System.out.println(obj));
        //
        HashSet hashSet = new HashSet(); // 16 负载因子 0.75
//        new HashSet<>(20); // 20 0.75
//        new HashSet<>(20, 0.8f);// 20 0.8
//        new HashSet<>(set);
        // remove()  equals
        // hashSet 要去重 就必须重写对象的 equals() 和 hashCode()
        // Integer
        System.out.println(hashSet.add(1));
        System.out.println(hashSet.add(new Student("", 20)));
        System.out.println(hashSet.add(1));
        //
        System.out.println(hashSet.contains(1));
        System.out.println(hashSet.remove(1));
        Iterator iterator = hashSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        for (Object obj: hashSet) {
            System.out.println(obj);
        }
        hashSet.forEach(obj -> System.out.println(obj));

    }
}
